Exemplary embodiments of the present invention relate to data transmission, and more specifically, to zero-copy data transmission in a software based network stack.
Sending and receiving application data over a computer network induces data copy operations on both sending and receiving hosts. In a multi-user operating system, data typically need to be copied between application space and operating system kernel. In these systems, the application generates and consumes data while the operating system kernel is responsible for eventual data shipping to a remote application over a network or for receiving remote application data from a network. When using connection-oriented, reliable transport protocols like TCP which relay data retransmissions for guaranteeing data delivery, a copy of the data is created and stored in kernel space for use as a temporary buffer for refetching the data for the retransmits.